Neste projeto iremos ler uma tecla. Se ela estiver pressionada ela muda o estado do led - De aceso para apagado e vice-versa.
O intuito deste projeto é ler uma tecla e alterar o conteúdo de uma 'memória' e ai controlar algo dependendo do valor dessa 'memória'.
Utilizei uma tecla de contato momentâneo mas se você só tiver uma tecla normal pode usar sem problemas.
O resistor pode ser qualquer um entre 1k e 100k.
Esquema :
Programa :
/*
Projeto 02 - LeTeclaControlaLed
O Objetivo deste projeto é ler uma tecla que ao ser pressionado acende o led
e ao soltamos a tecla o led apaga
Para este projeto você precisará de um resistor de 1K e uma tecla Normalmente aberta.
Temos uma tecla instalada na Porta D0 ligada da seguinte maneira :
O resistor deve estar ligado entre VCC(+5V) e o pino D0
A chave deve estar ligada ao Pino D0 e a terra.
Veja no esquema como conectar
Portanto ao medir LOW no pino D0 significa que estamos pressionando a tecla
Se medirmos HIGH significa que a tecla esta solta.
Além da tecla usaremos o led builtin do arduino para acender ou apagar pelo comando dessa tecla.
Portanto, nas portas do arduino teremos :
Arduino Utilização
D13 Led Builtin
D0 Chave de comando
*/
// Definindo onde nossas coisas estão conectadas
int tecla = 0; // D0 - Está ligado a Tecla
int led = 13; // D13 - Está ligado nosso led bultin
int letcla = 1; //aqui será lido o estado da tecla
// ou poderia ser const int led = LED_BUILTIN; // é o número da porta do led : D13 ou IO13
boolean estado = false; //estado do led atual - false=apagado, true=aceso
// Esta rotina roda apenas uma vez na inicialização :
void setup() {
pinMode(tecla, INPUT); // definindo a porta de leitura da tecla como entrada
pinMode(led, OUTPUT); // definindo a porta do led como saída
digitalWrite(led,LOW); //apagando o led inicialmente
}
// Loop eterno:
void loop() {
letcla = digitalRead(tecla); // lembre-se : 0=botão pressionado, 1=botão solto
if(letcla == 0) { // lendo a chave : 0=pressionada
estado = !estado; //inverte a variável estado : se true fica false e se false fica true
}
if(estado == true) { // status = true = acender led
digitalWrite(led,HIGH); // acendendo o led
}
else { // status = false = apagar o led
digitalWrite(led,LOW); //apagando o led
}
delay(500); // Aguardar 500 ms
}
Criamos uma variável no arduino chamada estado que guarda o estado do led. Se for false indicará led
apagado e se for true indicará led aceso.
Se a tecla for pressionada inverteremos o estado dessa variável estado.
Aí dependendo do valor da variável estado acendemos ou apagamos o led.
Aumentei o delay para 500 ms para não fazer a rotina de correção de debounce da tecla porque
não desejamos a repetição da tecla e neste projeto não é critico, poderíamos aguardar mais ainda.